package lembrete.core.backbeans;

import java.io.FileNotFoundException;
import java.util.Map;

import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import lembrete.core.beans.Grupo;
import lembrete.core.beans.Usuario;
import lembrete.core.exceptions.ExcecaoBD;
import lembrete.core.exceptions.LembreteException;

public class GrupoHandler extends SuperHandler {

	private Usuario user;
	private String nomeGrupo;
	private String editavel;
	private Grupo grupo;

	public GrupoHandler() throws FileNotFoundException, ExcecaoBD {
		super();
		setUser((Usuario) FacesContext.getCurrentInstance()
				.getExternalContext().getSessionMap().get("user"));
		setGrupo((Grupo) FacesContext.getCurrentInstance().getExternalContext()
				.getSessionMap().get("grupo"));
	}

	public Usuario getUser() {
		return user;
	}

	public void setUser(Usuario user) {
		this.user = user;
	}

	public String getNomeGrupo() {
		return nomeGrupo;
	}

	public void setNomeGrupo(String nomeGrupo) {
		this.nomeGrupo = nomeGrupo;
	}

	public String getEditavel() {
		return editavel;
	}

	public void setEditavel(String editavel) {
		this.editavel = editavel;
	}

	public String criaGrupo() {
		try {
			facade.criarGrupo(getNomeGrupo(), user.getEmail(), getEditavel());
			return Web_Util.OK;
		} catch (Exception e) {
			return Web_Util.FAIL;
		}
	}

	private void atualizaGrupoSessao() {
		Map sessionMap = FacesContext.getCurrentInstance().getExternalContext()
				.getSessionMap();
		Grupo grupo = (Grupo) sessionMap.get("grupo");
		Grupo grupoAtualizado = facade.getGrupoPorId(grupo.getIdGrupo());
		sessionMap.remove("grupo");
		sessionMap.put("grupo", grupoAtualizado);
	}

	public void update(ActionEvent event) {
		atualizaGrupoSessao();
	}

	public Grupo getGrupo() throws LembreteException, ExcecaoBD {
		return grupo;
	}

	public void setGrupo(Grupo grupo) {
		this.grupo = grupo;
	}

}
